using System;
using System.Text;
using System.IO;
using System.Web;
using System.Data;
using System.Threading;
using System.Collections;
using System.Configuration; 
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
using System.ComponentModel;
using System.Text.RegularExpressions;
using System.Web.Configuration;
using System.Web.Security;
using System.Configuration.Provider;
using System.Collections.Specialized;
using System.IO.Compression;
using ICSharpCode.SharpZipLib.Zip;


namespace ACM.cmsarea08
{

	/// <summary>
	/// Estende la classe Standard EventArgs. E' utilizzato nell'evento di salvataggio del MainButtons
	/// <see cref="ACM.cmsarea08.Administration.Controls.MainButton">Per maggiori informazioni sulla sorgente dell'evento</see>
	/// </summary>	
	public class SaveFormEventArgs:EventArgs,ISaveFormEventArgs {
		
			private object _valore;
			private CommandTypes _cmdt;

			/// <summary>
			/// Imposta/Ottiene un object con i dati del form
			/// </summary>				
			public object FormData {
				get { return _valore; }
				set { _valore = value; }
			}
			
			/// <summary>
			/// Imposta/Ottiene il tipo di comando eseguito 
			/// <see cref="ACM.cmsarea08.CommandTypes">Visualizza l'enumerazione per i tipi di comando</see>
			/// </summary>			
			public CommandTypes CommandType {
				get { return _cmdt; }
				set { _cmdt = value; }
			}

			/// <summary>
			/// Costruttore standard della classe - imposta i valori di default a null.
			/// </summary>				
			public SaveFormEventArgs() { _valore=null; _cmdt= CommandTypes.Insert; }
			public SaveFormEventArgs(object formdata) { _valore=formdata; _cmdt= CommandTypes.Insert; }
			public SaveFormEventArgs(object formdata, CommandTypes commandtype) { _valore=formdata; _cmdt= commandtype; }
	}

	
	/// <summary>
	/// Delega per utilizzare l'evento, SaveFormEventHandler
	/// </summary>		
	public delegate void SaveFormEventHandler(object o,SaveFormEventArgs e);

	/// <summary>
	/// Enumerazione dei tipi di Comando disponibili 
	/// <see cref="ACM.cmsarea08.SaveFormEventArgs">Visualizza l'eventargs corrispondente per maggiori informazioni</see>
	/// </summary>	
	public enum CommandTypes {
		///<summary>Tipologia di comando: Inserisci [nuova voce sul database]</summary>
		Insert,
		///<summary>Tipologia di comando: Aggiorna [aggiorna voce sul database]</summary>
		Update
	}
}


